/*-------------------<-- Start of Description-->---------------------\ | Read in a file into a dataset. | |---------------------<-- End of Description-->----------------------| |--------------------------------------------------------------------| |-----------<-- Start of Files or Arguements Needed-->---------------| | Arguments: | | file - the filename you want to read in; | | outdata - the output data set to save the contents of the file. | |-----------------<-- End of Arguements Needed-->--------------------| |--------------------------------------------------------------------| |------------------<-- Start of Files Created-->---------------------| | Example: %readfile(d:\web\sasmacros\temp1.log, outdata=filecnt); | \-------------------<-- End of Files Created-->---------------------*/ %macro readfile(file=, stopsign='----*/', outdata=_tmp) ; /*--------------------------------------------\ | Copy Right: Duo Zhou; | | Created: 1-1-2002 9:50am; | | Purpose: Read in the contents of a file | \--------------------------------------------*/ %local _tmplast_; %let _tmplast_=&syslast; %if (%sysfunc(fileexist(&file))) %then %do; filename indata "&file"; /* Your data step code for this file. */ DATA _tmp1; infile indata length=linelen; length line $ 2000; do until(index(line, &stopsign)); input @1 line $ varying200. linelen; output; end; PROC print data=_tmp1; title "Contents of &file"; run; %if (%quote(&outdata) ne) %then %do; data &outdata; set _tmp1; run; %end; %else %let syslast=&_tmplast_; %if (%quote(%upcase(&outdata)) ne %quote(_TMP1)) %then %do; proc sql; drop table _tmp1; quit; %end; %end; %else %put --> NOTE: The file "&file" does not exist.; %mend readfile;